package com.nopay.cdxphone.net;

import com.nopay.cdxphone.bean.CommonResponse;
import com.nopay.cdxphone.bean.response.AreaInfoResponse;
import com.nopay.cdxphone.bean.response.GetCallTaskCallResponse;
import com.nopay.cdxphone.bean.response.GetCallTaskGroupResponse;
import com.nopay.cdxphone.bean.response.GetCallTaskListResponse;
import com.nopay.cdxphone.bean.response.GetRichTextResponse;
import com.nopay.cdxphone.bean.response.GetVerifiCodeResponse;
import com.nopay.cdxphone.bean.response.LoginResponse;
import com.nopay.cdxphone.bean.response.OpenMemberSuccessResponse;
import com.nopay.cdxphone.bean.response.SaveCallDataResponse;
import com.nopay.cdxphone.bean.response.SaveCallTaskResponse;
import com.nopay.cdxphone.bean.response.UserStatisticsResponse;
import com.nopay.cdxphone.bean.response.VIPResponse;
import com.nopay.cdxphone.bean.response.WePayOrderResponse;

import java.util.Map;

import okhttp3.RequestBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.HTTP;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.PartMap;
import retrofit2.http.Query;

/**
 * http api
 */
public interface HttpApi {

    /**
     * 1登录接口
     * @param body
     * @return
     */
    @POST("app/user/login")
    Call<LoginResponse> doLogin(@Body RequestBody body);

    /**
     * 2注册接口
     * @param body 注册参数
     * @return 返回注册结果
     */
    @POST("app/user/register")
    Call<CommonResponse> doRegister(@Body RequestBody body);

    /**
     * 3获取短信验证码接口
     * @param phone 电话号码
     * @return
     */
    @GET("app/user/getVerificationCode")
    Call<GetVerifiCodeResponse> doGetVerifiCode(@Query("phone") String phone);

    /**
     * 4用户注销接口接口
     * @param userId 电话号码
     * @return
     */
    @GET("app/user/logOff")
    Call<CommonResponse> doLogout(@Query("userId") String userId);

    /**
     * 5找回密码
     * @param body
     * @return
     */
    @POST("app/user/forgetPassword")
    Call<CommonResponse> doForgetPassword(@Body RequestBody body);

    /**
     * 6用户更新密码接口
     * @param body
     * @return
     */
    @POST("app/user/updatePassword")
    Call<CommonResponse> doUpdatePassword(@Body RequestBody body);

    /**
     * 7更新用户信息接口
     * @param body
     * @return
     */
    @POST("app/user/updateUserInfo")
    Call<CommonResponse> doUpdateUserInfo(@Body RequestBody body);

    /**
     * 8上传头像接口 操作成功
     * @param params
     * @return
     */
    @Multipart
    @POST("app/user/uploadPicture")
    Call<CommonResponse> doUploadAvatar(@PartMap Map<String, RequestBody> params);

    /**
     * 9获取会员配置信息接口
     */
    @GET("app/member/memberList")
    Call<VIPResponse> doGetMemberConfig();

    /**
     * 10保存通话记录数据接口
     */
    @POST("app/callStatistics/save")
    Call<SaveCallDataResponse> doSaveCallData(@Body RequestBody body);

    /**
     * 11删除呼叫任务数据接口
     */
    @GET("app/callTask/delete")
    Call<CommonResponse> doDeleteCallTask(@Query("taskId") String taskId);

    /**
     * 12根据任务获取未拨打电话信息数据接口
     */
    @POST("app/callTask/findCallInfo")
    Call<GetCallTaskCallResponse> doGetCallTaskUnCall(@Body RequestBody body);

    /**
     * 13根据任务获取已拨打电话信息数据接口
     */
    @POST("app/callTask/findCalledInfo")
    Call<GetCallTaskCallResponse> doGetCallTaskCall(@Body RequestBody body, @Query("page") int page, @Query("rows") int rows);

    /**
     * 14导入呼叫任务以及人员信息数据接口
     */
    @Multipart
    @POST("app/callTask/importCallInfo")
    Call<CommonResponse> doImportCallTask(@PartMap Map<String, RequestBody> params, @Query("phone") String phone);

    /**
     * 15获取呼叫任务列表接口接口
     */
    @POST("app/callTask/list")
    Call<GetCallTaskListResponse> doGetCallTaskList(@Body RequestBody body, @Query("page") int page, @Query("rows") int rows);

    /**
     * 16保存呼叫任务以及明细电话信息接口
     */
    @POST("app/callTask/save")
    Call<SaveCallTaskResponse> doSaveCallTask(@Body RequestBody body);

    /**
     * 17获取呼叫电话信息接口
     */
    @GET("app/user/getUserStatistics")
    Call<UserStatisticsResponse> doGetUserStatistics(@Query("phone") String phone);

    /**
     * 18获取客服信电话
     */
    @GET("app/feedbackSuggestions/getContactCustomer")
    Call<CommonResponse> doGetContactCustomer();

    /**
     * 18意见反馈
     */
    @POST("app/feedbackSuggestions/save")
    Call<CommonResponse> doFeedbackSave(@Body RequestBody body);

    /**
     * 19会员充值订单生产
     */
    @POST("app/alipay/pay")
    Call<CommonResponse> doCreateAlipayOrder(@Body RequestBody body);

    /**
     * 19会员充值订单生产
     */
    @GET("app/wxPay/unifiedOrder")
    Call<WePayOrderResponse> doCreateWepayOrder(@Query("orderNo") String orderNo, @Query("amount") Integer amount, @Query("body") String body, @Query("title") String title);

    /**
     * 20同步会员信息
     * @param body
     * @return
     */
    @POST("app/user/addMember")
    Call<OpenMemberSuccessResponse> doMemberTrial(@Body RequestBody body);

    /**
     * 21登出
     */
    @GET("app/user/logOut")
    Call<CommonResponse> doLoginOut(@Query("userId") long userId);

    /**
     * 22获取最新版本
     */
    @GET("/app/feedbackSuggestions/getVersion")
    Call<CommonResponse> doGetVersion();

    /**
     * 23获取用户信息
     */
    @GET("/app/user/getUserInfo")
    Call<LoginResponse> doGetUserInfo(@Query("userId") long userId);

    /**
     * 24 获取区域列表筛选条件
     */
    @GET("/app/callTask/findAreaInfo")
    Call<AreaInfoResponse> doFindAreaInfo(@Query("taskId") int taskId);

    /**
     * 25 获取使用说明
     */
    @GET("/app/instructions/getList?type=1")
    Call<GetRichTextResponse> doGetInstructions();

    /**
     * 26 获取疑难处理
     */
    @GET("/app/instructions/getList?type=2")
    Call<GetRichTextResponse> doGetProblemAnswer();

    /**
     * 26 获取视频教程
     */
    @GET("/app/video/getList")
    Call<GetRichTextResponse> doGetVideoCourse();

    /**
     * 27 获取呼叫任务分组 (新)
     */
    @POST("/app/callTask/listNew")
    Call<GetCallTaskGroupResponse> doGetCallTaskGroup(@Query("phone") String phone);

    /**
     * 28 (照片和复制粘贴) 保存呼叫任务到分组 (新)
     */
    @POST("/app/callTask/saveNew")
    Call<SaveCallTaskResponse> doSaveCallTaskToGroup(@Body RequestBody body);

    /**
     * 29 (微信) 导入呼叫任务到分组 (新)
     */
    @Multipart
    @POST("/app/callTask/importCallInfoNew")
    Call<CommonResponse> doImportCallTaskToGroup(@PartMap Map<String, RequestBody> params, @Query("userPhone") String userPhone, @Query("taskId") int taskId);

    /**
     * 30 从分组中删除呼叫任务 (新)
     */
    @HTTP(method = "DELETE", path = "/app/callTask/deleteItem", hasBody = true)
    Call<CommonResponse> doDeleteCallTaskFromGroup(@Body RequestBody body);

    /**
     * 31 获取通话记录 (新)
     */
    @POST("/app/callTask/findCalledInfoNew")
    Call<GetCallTaskCallResponse> doGetCallLogList(@Body RequestBody body);
}